iT邦幫忙

2023 iThome 鐵人賽

DAY 8
0
Software Development

Windows Driver + Electron 學習筆記系列 第 8

Day08 非隨插即用(Non-PnP)驅動程式-4

  • 分享至 

  • xImage
  •  

今天要來實際編譯並執行Non-PnP driver sample,編譯環境已經在Day03建置完成,可以直接用Visual Studio開啟解決方案檔ioctl.sln,開啟後建置解決方案就可以成功編譯,編譯完成後從exesys的輸出資料夾分別將nonpnp.infnonpnpapp.exenonpnp.sys放置在同一資料夾內。

另外Non-PnP driver sample使用了wdfcoinstaller,我們需要透過wdfcoinstaller.msi安裝,連結為WDK 8 Redistributable Components,安裝完成後到對應的路徑將WdfCoinstaller01011.dll複製至與nonpnpapp.exe同一資料夾內。

以上檔案都放在同一資料夾後,就可以使用管理者權限開啟命令提示字元去執行nonpnpapp.exe,此時會發現測試程式有跳出錯誤訊息StartService failure! Error = 577

要如何知道這個錯誤碼是代表甚麼呢?可以到Microsoft Learn去查詢,查詢後可以得知是;

ERROR_INVALID_IMAGE_HASH
577 (0x241)
Windows 無法驗證此檔案的數位簽章。 最近的硬體或軟體變更可能已安裝未正確或損毀的檔案,或可能是來自未知來源的惡意軟體。

這是因為我們是使用Debug來建置解決方案,此時的測試程式的數位簽章是沒有經過驗證的,所以需要將測試模式啟用,才能正常執行測試程式。首先使用管理者權限開啟命令提示字元,輸入:

Bcdedit.exe -set TESTSIGNING ON

之後重新開機,可以在桌面右下角確認測試模式是否成功開啟。

有成功開啟測試模式後,一樣使用管理者權限開啟命令提示字元,接著執行nonpnpapp.exe,若執行成功則會顯示以下畫面:

可以看到透過DeviceIoContorl傳到驅動程式的IO control code有被Non-PnP驅動程式正確執行。

參考內容

Non-PnP Driver Sample - README
系統錯誤碼 (500-999) (WinError.h) - Win32 apps | Microsoft Learn


上一篇
Day07 非隨插即用(Non-PnP)驅動程式-3
下一篇
Day09 如何偵錯驅動程式-1
系列文
Windows Driver + Electron 學習筆記30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言